State-of-art IDE systems allow developers visually manipulate programming entities, by setting properties visually and by building GUI visually, thus providing rapid software development. FIG. 1 shows a typical MICROSOFT® VISUAL STUDIO® user interface showing a form designer 101, a button 102 on the form, and a timer component 103. The form, the button and the timer are all programming entities. Since the timer component 103 does not have a visual UI, the form designer put it on a component pane, not on the form. Visually setting a property value is by presenting a list of properties for the developer to identify a property and then enter desired value for the property, in a What You See Is What You Get manner. FIG. 2 shows properties of a button in a property grid 201, setting BackColor property 202 can be done by clicking a color from color selector 203. In comparison, setting a property value by “text code” is by writing one or more lines of code. It is the responsibility of the developer to correctly identify desired property by code and to correctly use code to represent desired property value, for example, use RGB values to represent a color. When visually manipulating a programming entity, as shown in FIG. 2, it is the responsibility of the IDE to correctly identify properties and store correct property values when the developer enters the values, in a What You See Is What You Get manner, as in FIG. 2, the IDE has to form color RGB values from the color the developer clicks.
In a state-of-art IDE, a component, which can be visually manipulated, is a specifically designed software class. For example, in JAVA® (JAVA is a registered trademarks of Sun Microsystems, Inc) language, such a component is a JavaBean or a JComponent (Krill, Paul (Dec. 11, 2007). “NetBeans to pick up where Sun Java Studio leaves off”. Java World. Retrieved Jul. 9, 2010.). All Swing components are derived from JComponent. WindowsBuilder is a visual tool for toolkit-specific components: https://developers.google.com/java-dev-tools/wbpro/userinterface/palette. Visual Swing for Eclipse is a visual tool for working on Swing components: http://code.google.com/p/visualswing4eclipse/. In Microsoft®.Net Framework®, such a component is a class implementing IComponent interface and a parameter-less constructor, see http://msdn.microsoft.com/en-us/library/fw694 kde.aspx for more details of such requirements. Since most software classes do not meet such requirements, most classes in software libraries cannot be visually manipulated by a state-of-art IDE, and cannot take advantages of visual object manipulations by state-of-art IDE's. A state-of-art IDE only allows adding such specifically designed components to its toolbox. For example, if we try to add a class not so designed to MICROSOFT® VISUAL STUDIO® toolbox, an error message box will appear as shown in FIG. 4. See http://www.microsoft.com/visualstudio/eng/products/visual-studio-overview for information on MICROSOFT® VISUAL STUDIO®. Mono™ (Mono is a registered trademark of Novell®) IDE http://www.mono-project.com/Main_Page) works on multiple platforms, it has the same restrictions on visually-manipulate-able objects as MICROSOFT® VISUAL STUDIO® does.
Visually manipulating of software objects is the core of a rapid software development IDE. Such an IDE allows visual selection of an object; presents its properties and events; allowing modifying object properties interactively; allowing selected events to be handled. These capabilities form the major differences between a state-of-art visual programming IDE and an older text-editor only IDE. Because of the restrictions on visually-manipulate-able components, the benefits of visual object manipulations of a state-of-art visual programming IDE are limited to only a small percentage of existing software classes. When a not-visually-manipulate-able component is used, a state-of-art IDE resorts to old-style text-editor approach and loses the benefits of visual object manipulations.
It is desirable to remove the restrictions placed on a class for it to be a visually-manipulate-able component, so that all existing software classes may take advantages of visual object manipulations.